今天先來個簡單的,還不算是爬蟲只能算是入門,就是來抓取YT上的影片~
先隨便搜尋一部影片,這裡用我去年鐵人賽的影片好了!
在最最最一開始就是先打開F12看背後原始碼,按住方塊滑鼠點選影片的部分。
可以看到裡面有一個網址,雖然前面有個blob:感覺怪怪的,但管他的,先點兩下複製起來再說。這時如果你開新的分頁並將網址貼上,會得到以下結果:
遇到這種情況一定會覺得是前面的blob:怪怪的嘛,那把它刪掉試試看,重新搜尋就會看到這隻猴子。
其實估狗一下就可以發現blob:是指向串流,簡單來說就是這個影片並不是完整的影片,是由一段一段短短的影片所構成,這種影片並不是一開始就有網址,而是一開始對面產生一點再給你一段網址,讓你可以用這個網址拿到下一段影片的網址,這就有一點隱藏網址的感覺。那因為影片已經被分割成一段一段,就不能算是media,所以上方要選擇Fetch/XHR(沒有特別被歸類到哪裡)。
現在重新來過,打開原始碼後上方記得選擇Fetch/XHR,讓影片跑個兩三秒後選擇videoplayback開頭的,如果有好幾個要選最前面的,如果影片開頭遇到廣告要先看完廣告後再重整一次。找到Response Headers中的content-type,如果看到video就恭喜你找對啦,這裡有可能會有其他不同的名稱,畢竟YT上不見得每個影片的格式都相同。
實驗一下,把Gerenal的網址送出一次,看到影片可以從頭播放就代表中啦,不過它只會播前面幾秒,如果沒有跑出來就代表你找的不是最前面的。現在你應該也很清楚了,之所以會跑幾秒而已是因為它的網址給的就是這麼一點點,每一段都有自己獨特的網址,這就是串流。
仔細看可以發現網址上其實會寫出來它是哪一段的影片,但會寫在哪裡?由於網址通常很長需要仔細找一下,通常是xxxxx?參數=值&參數=值,像是下面那張圖片。
第一個參數就是說到第幾秒時這個網址就沒有用了,上面還有會你的ip地址,直接看到最下面有一行range=0-70193就是告訴你這個片段就是0-70193秒的部分,當我想要整部影片就直接把這組參數=值刪除掉,就口以拿到整部啦~
但還沒結束!
還有一個很重要的問題是,影片沒有聲音啊!!
你看YT時有沒有一種經歷,就是聲音和影片不同步,代表Youtube會把影片檔跟音訊檔分開來,但是音檔在哪裡?
別急別急,在剛剛的videoplayback下面還有一個videoplayback是不是覺得很可疑,一樣到Response Headers中的content-type確認它的檔案類型,如果看到的是audio,那麼就恭喜你成功找到這部影片的音檔了,現在只要像剛剛一樣,把網址中的range=給刪掉,完整音檔就到手了。
最後一步就是要把影片檔和音訊檔合併,講到影片類的轉檔與合併就不得不講一下這個軟體FFmpeg,是一個非常好用的工具,是免費的影片編輯工具,由全世界工程師維護。不過缺點是由於它主要是用來處理大量工作,像是大量上浮水印、大量上字幕,都是和程式配合操作,所以沒有圖形化介面。
不過Windows比較幸運有好心人製作出圖形化介面,操作上簡單很多。
解壓縮完裡面應該會有FFQueue.exe,這就是圖形化的介面,打開後差不多長這樣。
打開後選擇Add,接下來不管出現什麼都按確定,再選擇自己下載好的檔案,要記得在Outputfile的地方改副檔名,不然就白跑一趟,再來選擇savejob,就可以開始啦~
如果你要接著合併再點進去剛剛的檔案,選擇Add input file,把影片檔加進去,記得匯入的檔案每個都勾(畫面跟聲音黨),一樣要記得再Outputfile的地方改副檔名,再來savejob -> start。
先打開終端機,直接將目的地資料夾拖曳到終端機,Enter後接著再將ffmpeg也拖曳到終端機,這時加上按空格再加上-i,按空格再加上聲音檔(拖曳到終端機)最後還要再按一個空格然後加上檔名.mp3,這樣看可能有點複雜,其實就是先目的地資料夾
ffmpeg -i 聲音 新檔名.mp3
(ffmpeg前面還會有一大串,像是/Users/nini/Downloads/之類的)
合併其實也差不多,我直接把指令寫在下面。ffmpeg -i 聲音 -i 影片 out.mp4
這樣你就可以拿到一部完整的影片啦~另外在最後歡迎大家爬我的影片(?),在此附上我的YT頻道,順便增加我的曝光量哈哈哈哈